/*
* INSANE - Interactive Structural Analysis Environment
*
* Copyright (C) 2003-2005
* Universidade Federal de Minas Gerais
* Escola de Engenharia
* Departamento de Engenharia de Estruturas
* 
* Author's email :    insane@dees.ufmg.br
* Author's website :  http://www.dees.ufmg.br/insane
* 
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or any later version.
* 
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
* 
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/
package br.ufmg.dees.insane.util.numericalIntegration;

/**
*A class representing a VolumeGaussPoint for Volume coordinates.
*
*@author Lucas, Marcelo & Pitangueira, Roque
*@version 1.0
*@since September 2004
*/

public class VolumeGaussPoint extends IntegrationPoint
{
	/** The weight of this VolumeGaussPoint. */
	protected double weight;
	
	/** The two dimensional array representing the volume coordinates for this VolumeGaussPoint. */
	private static final double[][] 
//Os valores entre chaves sao para xi_1, xi_2 , xi_3 e xi_4 respectivamente)
	volumeGaussCoords = {
//para 1 ponto de Gauss 
	{0.25, 0.25, 0.25, 0.25},
//para 2 ponto de Gauss
	{0, 0, 0, 0, 0, 0, 0, 0},
//para 3 pontos de Gauss
	{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
//para 4 pontos de Gauss
	{0.58541020, 0.13819660, 0.13819660, 0.13819660, 0.13819660, 0.58541020, 0.13819660, 0.13819660, 0.13819660, 0.13819660, 0.58541020, 0.13819660, 0.13819660, 0.13819660, 0.13819660, 0.58541020},
//para 5 pontos de Gauss
	{0.25, 0.25, 0.25, 0.25, 0.33333333333333333, 0.166666666666666667, 0.166666666666666667, 0.166666666666666667, 0.166666666666666667, 0.333333333333, 0.166666666666666667, 0.166666666666666667, 0.166666666666666667, 0.166666666666666667, 0.333333333333333, 0.166666666666666667, 0.166666666666666667, 0.166666666666666667, 0.166666666666666667, 0.33333333333333333},
};

	//pesos relacionados aos pontos de gauss
	/** The two dimensional array representing the weights related to the volume coordinates for this VolumeGaussPoint. */
	private static final double[][]
	//Ha somente um fator de peso para utilizar na integracao de coordenadas de volume
	volumeGaussWeights = {
	//para 1 ponto de Gauss
	{1},
	//para 2 pontos de Gauss
	{0, 0},
	//para 3 pontos de Gauss
	{0, 0, 0},
	//para 4 pontos de Gauss
	{0.25, 0.25, 0.25, 0.25},
	//para 5 pontos de Gauss
	{-0.8, 0.45, 0.45, 0.45, 0.45},
};
	
    /** Constructs an Volume Gauss point */
    public VolumeGaussPoint() {
        this.gaussCoords=volumeGaussCoords;
        this.gaussWeights=volumeGaussWeights;
    }

}
